控制台(Console) 您所在的位置:网站首页 nodejs 控制浏览器 控制台(Console)

控制台(Console)

2023-06-19 17:10| 来源: 网络整理| 查看: 265

console (控制台)# 稳定性: 2 - 稳定的

console 模块提供了一个简单的调试控制台,类似于 Web 浏览器提供的 JavaScript 控制台。

该模块导出了两个特定的组件:

一个 Console 类,包含 console.log() 、 console.error() 和 console.warn() 等方法,可以被用于写入到任何 Node.js 流。 一个全局的 console 实例,可被用于写入到 process.stdout 和 process.stderr。 全局的 console 使用时无需调用 require('console')。

注意:全局的 console 对象的方法既不总是同步的(如浏览器中类似的 API),也不总是异步的(如其他 Node.js 流)。 详见 进程 I/O。

例子,使用全局的 console:

console.log('你好世界'); // 打印: '你好世界'到 stdout。 console.log('你好%s', '世界'); // 打印: '你好世界'到 stdout。 console.error(new Error('错误信息')); // 打印: [Error: 错误信息]到 stderr。 const name = '描述'; console.warn(`警告${name}`); // 打印: '警告描述'到 stderr。

例子,使用 Console 类:

const out = getStreamSomehow(); const err = getStreamSomehow(); const myConsole = new console.Console(out, err); myConsole.log('你好世界'); // 打印: '你好世界'到 out。 myConsole.log('你好%s', '世界'); // 打印: '你好世界'到 out。 myConsole.error(new Error('错误信息')); // 打印: [Error: 错误信息]到 err。 const name = '描述'; myConsole.warn(`警告${name}`); // 打印: '警告描述'到 err。 Console 类# 版本历史 版本变更 v8.0.0

Errors that occur while writing to the underlying streams will now be ignored.

Console 类可用于创建一个具有可配置的输出流的简单记录器,可以通过 require('console').Console 或 console.Console 使用:

const { Console } = require('console'); const { Console } = console; new Console(stdout[, stderr])# stdout stderr

使用可写流实例来创建新的 Console 对象。 stdout 是一个可写流,用于打印日志或输出信息。 stderr 用于输出警告或错误。 如果没有提供 stderr,则 stdout 会被用于 stderr。

const output = fs.createWriteStream('./stdout.log'); const errorOutput = fs.createWriteStream('./stderr.log'); // 自定义的简单记录器 const logger = new Console(output, errorOutput); // 像 console 一样使用 const count = 5; logger.log('count: %d', count); // stdout.log 中打印: count 5

全局的 console 是一个特殊的 Console 实例,它的输出会发送到 process.stdout 和 process.stderr。 相当于调用:

new Console(process.stdout, process.stderr); console.assert(value[, message][, ...args])# 新增于: v0.1.101 value message ...args

一个简单的断言测试,验证 value 是否为真。 如果不为真,则抛出 AssertionError。 如果提供了 message,则使用 util.format() 格式化并作为错误信息使用。

console.assert(true, 'does nothing'); // 通过 console.assert(false, 'Whoops %s', 'didn\'t work'); // AssertionError: Whoops didn't work

注意:Node.js 中的 console.assert() 方法与在浏览器中的 console.assert() 方法的实现是不一样的。

具体地说,在浏览器中,用非真的断言调用 console.assert() 会导致 message 被打印到控制台但不会中断后续代码的执行。 而在 Node.js 中,非真的断言会导致抛出 AssertionError。

可以通过扩展 Node.js 的 console 并重写 console.assert() 方法来实现与浏览器中类似的功能。

例子,创建一个简单的模块,并扩展与重写了 Node.js 中 console 的默认行为。

'use strict'; // 用一个新的不带补丁的 assert 实现来创建一个简单的 console 扩展。 const myConsole = Object.create(console, { assert: { value: function assert(assertion, message, ...args) { try { console.assert(assertion, message, ...args); } catch (err) { console.error(err.stack); } }, configurable: true, enumerable: true, writable: true, }, }); module.exports = myConsole;

然后可以用来直接替换内置的 console:

const console = require('./myConsole'); console.assert(false, '会打印这个消息,但不会抛出错误'); console.log('这个也会打印'); console.clear()# 新增于: v8.3.0

当 stdout 是一个 TTY 时,调用 console.clear() 将尝试清除 TTY。 当 stdout 不是一个TTY时,该方法什么都不做。

注意:console.clear() 的具体行为可能因操作系统和终端类型而异。 对于大多数Linux操作系统,console.clear() 与 clear shell 命令行为类似。 在Windows上,console.clear() 将只清除当前终端视图中Node.js二进制文件的输出。

console.count([label])# 新增于: v8.3.0 label 计数器的显示标签。 默认为 'default'。

维护一个指定 label 的内部计数器并且输出到 stdout 指定 label 调用 console.count() 的次数。

> console.count() default: 1 undefined > console.count('default') default: 2 undefined > console.count('abc') abc: 1 undefined > console.count('xyz') xyz: 1 undefined > console.count('abc') abc: 2 undefined > console.count() default: 3 undefined > console.countReset([label='default'])# 新增于: v8.3.0 label 计数器的显示标签。 默认为 'default'。

重置指定 label 的内部计数器。

> console.count('abc'); abc: 1 undefined > console.countReset('abc'); undefined > console.count('abc'); abc: 1 undefined > console.debug(data[, ...args])# 新增于: v8.0.0 data ...args

The console.debug() function is an alias for console.log().

console.dir(obj[, options])# 新增于: v0.1.101 obj options showHidden depth colors

在 obj 上使用 util.inspect() 并打印结果字符串到 stdout。 该函数会绕过任何定义在 obj 上的自定义的 inspect() 函数。 可选的 options 对象可以传入用于改变被格式化的字符串:

showHidden - 如果为 true,则该对象中的不可枚举属性和 symbol 属性也会显示。默认为 false。

depth - 告诉 util.inspect() 函数当格式化对象时要递归多少次。 这对于检查较大的复杂对象很有用。 默认为 2。 设为 null 可无限递归。

colors - 如果为 true,则输出会带有 ANSI 颜色代码。 默认为 false。 颜色是可定制的,详见定制 util.inspect() 颜色。

console.error([data][, ...args])# 新增于: v0.1.100 data ...args

打印到 stderr,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const code = 5; console.error('error #%d', code); // 打印: error #5 到 stderr console.error('error', code); // 打印: error 5 到 stderr

如果在第一个字符串中没有找到格式化元素(如 %d),则在每个参数上调用 util.inspect() 并将结果字符串值拼在一起。 详见 util.format()。

console.group([...label])# 新增于: v8.5.0 ...label

将后续行的缩进增加两个空格。

如果提供了一个或多个 labels,则首先打印这些 labels,而不需要额外的缩进。

console.groupCollapsed()# 新增于: v8.5.0

console.group()的一个别名.

console.groupEnd()# 新增于: v8.5.0

将后续行的缩进减少两个空格。

console.info([data][, ...args])# 新增于: v0.1.100 data ...args

console.info() 函数是 console.log() 的一个别名。

console.log([data][, ...args])# 新增于: v0.1.100 data ...args

打印到 stdout,并带上换行符。 可以传入多个参数,第一个参数作为主要信息,其他参数作为类似于 printf(3) 中的代替值(参数都会传给 util.format())。

const count = 5; console.log('count: %d', count); // 打印: count: 5 到 stdout console.log('count:', count); // 打印: count: 5 到 stdout

详见 util.format()。

console.time(label)# 新增于: v0.1.104 label

启动一个定时器,用以计算一个操作的持续时间。 定时器由一个唯一的 label 标识。 当调用 console.timeEnd() 时,可以使用相同的 label 来停止定时器,并以毫秒为单位将持续时间输出到 stdout。 定时器持续时间精确到亚毫秒。

console.timeEnd(label)# 版本历史 版本变更 v6.0.0

This method no longer supports multiple calls that don’t map to individual console.time() calls; see below for details.

v0.1.104

新增于: v0.1.104

label

停止之前通过调用 console.time() 启动的定时器,并打印结果到 stdout:

console.time('100-elements'); for (let i = 0; i < 100; i++) {} console.timeEnd('100-elements'); // 打印 100-elements: 225.438ms

注意:从 Node.js v6.0.0 开始,console.timeEnd() 删除了计时器以避免泄漏。 在旧版本上,计时器依然保留。 它允许 console.timeEnd() 可以多次调用同一标签。 此功能是非计划中的,不再被支持。

console.trace([message][, ...args])# 新增于: v0.1.104 message ...args

打印字符串 'Trace :' 到 stderr ,并通过 util.format() 格式化消息与堆栈跟踪在代码中的当前位置。

console.trace('Show me'); // 打印: (堆栈跟踪会根据被调用的跟踪的位置而变化) // Trace: Show me // at repl:2:9 // at REPLServer.defaultEval (repl.js:248:27) // at bound (domain.js:287:14) // at REPLServer.runBound [as eval] (domain.js:300:12) // at REPLServer. (repl.js:412:12) // at emitOne (events.js:82:20) // at REPLServer.emit (events.js:169:7) // at REPLServer.Interface._onLine (readline.js:210:10) // at REPLServer.Interface._line (readline.js:549:8) // at REPLServer.Interface._ttyWrite (readline.js:826:14) console.warn([data][, ...args])# 新增于: v0.1.100 data ...args

console.warn() 函数是 console.error() 的一个别名。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有